This invention relates generally to systems and methods for installing application program suites and, more particularly, relates to the ordering and actual execution of various install actions necessary to accomplish the installation of a suite of application programs.
With the continued growth and specialization of various software applications for both business and residential users, software original equipment manufacturers (OEMs) and secondary value added providers (VAPs) have begun selectively combining these applications into suites. The selection of the particular applications to include in a suite is made based on certain synergies desired to be achieved for a particular customer or group of customers. In this way a business customer, for example, may purchase a single suite that provides all of the applications to allow complete productivity for all of the functions that are normally performed in the business environment. This selection and grouping process by the OEMs and/or the VAPs greatly simplifies the decision process at the user level, and typically allows for a common user experience across applications since typically all applications will be from a particular OEM.
Another advantage provided by a suite of applications exists at the system administration level. Unlike the requirement of having to separately install and setup each individual application, entering the same user information over and over for each application, the installation of a suite is much more integrated. Most suites employ an installation wizard of some sort that installs and sets up all of the applications within the suite at one time. While this presents a distinct advantage over the individual application installation and setup, the structure of modem suites present problems for current installation processes.
A typical installation process for these suites begins by installing one of the applications in its entirety, moving to the next, installing it completely, moving to the next, and so on until the entire suite is installed. While this worked fine for some of the earliest suites, dependencies and other required relationships between applications in more modern suites have made this simple model much more complex. Further, some applications required that certain initialization or cleanup steps be performed for proper installation. To accommodate these, application developers were forced to either place these steps into the core setup modules or add additional setup modules to the suite itself. This has proven very costly in terms of maintenance.
Additionally, since one application was xe2x80x9cfinishedxe2x80x9d before the next application began its installation, the optimization steps that were performed at the end of the installation of the earlier applications could be rendered moot by the further installation of another application. In these cases, users were forced to go back and essentially reinstall the application whose optimization was disturbed to ensure that the system would operate correctly. This, obviously, did not find favor with users. Further, some applications would not fully complete their installations, or their installations would perform actions that would prevent other applications from installing correctly. In these situations, the adversely affected applications needed to compensate by performing actions that enabled them to complete correctly. This too was costly and added additional complexity to the system.
While many suites comprise a group of separate applications bundled together forming, in essence, an aggregation of applications as discussed above, more advanced and sophisticated suites are actually comprised of a multitude of inter-dependent applications. Indeed, many of the application programs themselves are actually minisuites of related or complementary applications integrally operating as a xe2x80x9csinglexe2x80x9d application. Unfortunately, these mini-suites present problems that are additional and unique from those already discussed for the current installation and setup technology.
Specifically, each mini-suite application may include a different version of a member application (one of the applications that make up the mini-suite application). As such, the installation of the first mini-suite may result in the installation of, e.g., version 2.0 of a particular member application. When the second mini-suite application is installed, it may have as a member application version 1.5 of that same particular member application installed as part of the prior installation. Unfortunately, the current installation technology typically replaces the newer version that was installed first with the older version. This may have an adverse effect on the first installed mini-suite since it may require functions only available in the newer version of the member application. In this situation the final installed configuration of the overall suite may not include the correct or latest version of an application if a later-installed application overwrote it with an earlier version.
In addition to these problems, which may be seen for most suite installations, an additional user experience problem exists in large and complex enterprise system installations. In these enterprise system installations the installation and configuration process may take several hours to complete and may involve several hundred megabytes of code and data installation and setup. It is common practice with these installations, since they are so time consuming, for the system administrator to begin the installation process late in the day, supply the required information as queried by the system, and go home to allow the installation to proceed overnight. Unfortunately, it is often the case that the installation may be stopped at various points to query for additional user input, often several hours apart. As a result, the suite administrator is really unable to begin a long installation and allow it to run overnight or during another unattended period because it is not known when the installation will halt to ask for further user input. This requires that the administrator continuously monitor the entire installation process (which could take upwards of ten hours or more to complete) so that undue stoppages while the system awaits user input does not occur.
There, therefore, exists a need in the art to overcome these and other problems existing with the current state of suite installation programs.
The inventive concepts of the instant invention relate to setup and installation applications, and more particularly to setup and installation wizards for application program suites. Specifically, the concepts disclosed in this case facilitate the installation of the several components of a suite of server applications by dividing the installation into multiple parts or stages. Each of these multiple stages is executed in a specific sequence, in a known fashion, and allows the interleaving of required actions from the individual applications. Preferably, these stages comprise three stages, e.g. pre-install, install, and post-install, although additional stages, e.g. optimization, etc., may also be included.
In the system of the instant invention, the problems discussed above are overcome by dividing the entire installation process into these various stages, and grouping the activities for each stage for all applications together. The work to be performed in each stage is accomplished in a logical manner, as opposed to being tied to the start and finish of a particular sequence of applications. This allows the maintenance of proper dependencies, proper component version installation, one time optimization initiation, etc.
To accomplish these benefits in accordance with the instant invention, each component to be installed implements a specific component object model (COM) interface that contains a method or function for each setup stage supported. In a preferred embodiment, an initial pre-install stage is defined during which all of the applications complete their user-interaction and querying functions. Additionally, the core setup application receives and verifies component availability and version requirements, dependency verification, preliminary file copy operations, some system configuration setting, etc. The second stage in the preferred embodiment is the install stage, during which the applications are actually installed and setup on the computer. During the third phase, post-install, any clean-up activity, version update, wizard optimization, etc. takes place. Additionally, any necessary or desired rollback activity is accomplished during this stage. A separate optimization phase may be included depending on the overall nature and complexity of the functions to be performed in the third phase.
In an alternate embodiment, the core setup installation application queries the components themselves to determine what install states they support. The core setup application of the instant invention determines the installation order for the components, acquires the COM interface from the component, and for each install stage, calls the appropriate method on that interface. Each component""s method for a given stage is called before any methods or any components for the next stage are called.
Additional features and advantages of the invention will be made apparent from the following detailed description of illustrative embodiments that proceeds with reference to the accompanying figures.